<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    /* 1、算术运算符：
        个我们数学中的一样，主要用于数值运算，js中提供的：
        算术运算符：+加 -减 *乘 /除 %取余 ()提高优先级
    */
    // 如果加号两侧任意一侧为字符串，那么+是拼接的意义
    console.log(123+'123');

    /* 2、赋值运算符：
        =（赋值操作符）把右侧的值赋值给左侧的变量 
        +=加等 -=减等 *=乘等 /=除等 %=取余等
    */

    /* 3、自增自减操作符：
        在不参与运算的情况下 ++i i++ 他们都自增一
        在参与运算的时候：i++先运算再加1；++i先加1后运算 
    */

    /* 4、逻辑运算符：
        &&与（且，和）  ||或  !非 
        使用逻辑运算符结果只有true和false
        &&：真真为真、真假为假、假真为假、假假为假
        ||：真真为真、真假为真、假真为真、假假为假
        !：非真为假、非假为真
        先算贴着的! 然后&& 最后|| 最后括号外
    */
    /* 逻辑与的操作不仅仅是布尔值，还可以用于任何类型
        如果两个操作数被转成布尔值第一个是true，则返回第二个操作数
        如果两个操作数被转成布尔值第一个是false，则返回第一个操作数 */
    console.log(1 && 2);    //2
    console.log('a' && 1);  //1
    console.log('a' && ''); //''
    console.log('' && 0);   //''

    /* 5、关系运算符：
        ==等于  ===全等于  !=不等于  !==不全等于 大于小于号等
        使用关系运算符得出的结果全部都是布尔类型。

        当参与比较的操作数是非数值类型时，则会进行数据类型转换，然后参与比较
        规则如下：
        1.两个操作数都是数值，则进行数值比较
        2.都是字符串，则比较字符串对应的字符编码值
        3.都是布尔值，则先转换成数值，再进行比较 
        4.一个是数值，则另一个也转换成数值（不是字符编码，即数字和非数字字符串比较为false），再进行比较
    */
    console.log(0 < "z");     //flase
    //连比的写法：连比需要使用&&进行连接
    console.log(5 == '5');    //true
    //===或!==不会对比较的数据类型进行转换
    console.log(5 !== '5');   //true
    console.log(5 === '5');   //false
    // 如果==或===两侧都是字符串，那么会直接比较字符串是否相同，相同为true不同为false
    // 如果!=或!==两侧都是字符串，那么会直接比较字符串是否相同，不同为true相同为false
    
    /* 6、条件运算符（三目运算符或三元运算符）
        格式：条件? 结果1:结果2
        当条件为真时，返回结果1，否则返回结果2 
    */
    console.log(5 > 3 ? 5 < 2 : 5 > 2);//flase

    /* 7、运算符优先级
    常用运算符优先级从高到低
    1.()优先级最高
    2.一元运算符++ -- !
    3.算术运算符
    4.关系运算符
    5.相等运算符== ！= === ！==
    6.逻辑运算符：先&& 后|| 
    7.赋值运算符
    */
    
</script>

</html>